package cn.yun.web.response;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/*
演示ServletResponse对象:
    获取字符输出流并写入数据:response.getWriter().write()

 响应中文字符消息时,浏览器解析显示乱码的原因: 编解码使用的字符集不一致
                                     因为获取到的输出流是Tomcat返回给的  他们默认的字符集是拉丁编码 ISO-8859-1的
                                     而window系统浏览器默认的字符集是GBK

 解决方法:获取输出流之前 设置流的默认字符集
        1. 设置流的字符集和浏览器默认的字符集一致
           response.setCharacterEncoding("gbk");
        2. 告诉浏览器.服务器发送的消息体数据的编码.并建议浏览器使用该编码解码
              1.response.setHear("content-type","text/html;charset=utf-8")
              2.response.setContentType("text/html;charset=utf-8");


*/
@WebServlet("/responseDemo4")
public class ResponseDemo4 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       // 获取输出流之前设置流的默认字符集
         //response.setCharacterEncoding("gbk");
        //response.setHeader("content-type","text/html;charset=utf-8");
        response.setContentType("text/html;charset=utf-8");

        //1.获取字符输出流
        PrintWriter pw = response.getWriter();
        //2.输出数据
       // pw.write("hello");
        pw.write("<h1> hello </h1>");
        pw.write("你好"); //会乱码  编解码使用的字符集不一致
                           // 因为获取到的输出流是Tomcat返回给的  他们默认的字符集是拉丁编码 ISO-8859-1的 而window系统浏览器默认的字符集是GBK


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
